package rmi;

import java.rmi.*;
import java.rmi.server.*;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import dao.Conexao;
import entidade.Chamado;
import entidade.Divisao;
import entidade.Pessoa;
import entidade.Situacao;
import entidade.Usuario;


@SuppressWarnings("serial")
public class InterfaceSPDManagerImp extends UnicastRemoteObject implements InterfaceSPDManager{
   
	private Connection conexao = null;
   
    public InterfaceSPDManagerImp() throws RemoteException, ClassNotFoundException, SQLException{  
    	conexao = Conexao.getConexao();		
    	
    }

    public String olaMundo() {
        return "Olá mundo !!!";
    }
    
    //Chamado
    
    public String insereChamado(Chamado chamado) throws RemoteException, SQLException {
		String sql = "insert into chamado ( cd_usuario, cd_tecnico, cd_cliente, cd_situacao, dataAbertura, dataPrevista, dataConclusao, solicitado, solucao, material, causa ) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        //stmt.setInt(1, chamado.getCodigo());
        stmt.setInt(1, chamado.getUsuario().getCodigo());
        stmt.setInt(2, chamado.getTecnico().getCodigo());
        stmt.setInt(3, chamado.getCliente().getCodigo());
        stmt.setInt(4, chamado.getSituacao().getCodigo());
        stmt.setDate(5, new Date(chamado.getDataAbertura().getTime()));
        stmt.setDate(6, new Date(chamado.getDataPrevista().getTime()));
        if(chamado.getDataConclusao() != null){
        	stmt.setDate(7, new Date(chamado.getDataConclusao().getTime()));
        }else{
        	stmt.setDate(7, null);
        }
        stmt.setString(8, chamado.getSolicitado());
        stmt.setString(9, chamado.getSolucao());
        stmt.setString(10, chamado.getMaterial());
        stmt.setString(11, chamado.getCausa());
        stmt.execute();
        stmt.close();
		return "Inserido com Sucesso";
	}

	public String alteraChamado(Chamado chamado) throws RemoteException, SQLException {
		String sql = "update chamado set cd_usuario = ?, cd_tecnico = ?, cd_cliente = ?, cd_situacao = ?, dataAbertura = ?, dataPrevista = ?, dataConclusao = ?, solicitado = ?, solucao = ?, material = ?, causa = ? where cd_chamado = ?";
        PreparedStatement stmt = conexao.prepareStatement(sql);       
        stmt.setInt(1, chamado.getUsuario().getCodigo());
        stmt.setInt(2, chamado.getTecnico().getCodigo());
        stmt.setInt(3, chamado.getCliente().getCodigo());
        stmt.setInt(4, chamado.getSituacao().getCodigo());
        stmt.setDate(5, new Date(chamado.getDataAbertura().getTime()));
        stmt.setDate(6, new Date(chamado.getDataPrevista().getTime()));
        stmt.setDate(7, new Date(chamado.getDataConclusao().getTime()));
        stmt.setString(8, chamado.getSolicitado());
        stmt.setString(9, chamado.getSolucao());
        stmt.setString(10, chamado.getMaterial());
        stmt.setString(11, chamado.getCausa());
        stmt.setInt(12, chamado.getCodigo());
        stmt.execute();
        stmt.close();
		return "Alterado com Sucesso";
	}

	public String excluiChamado(Chamado chamado) throws RemoteException, SQLException {
		String sql = "DELETE from chamado where cd_chamado = ? ";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        stmt.setInt(1, chamado.getCodigo());
        stmt.execute();
        stmt.close();
		return "Excluido com Sucesso";
	}

	public List<Chamado> retornaChamado(Chamado chamado) throws RemoteException, SQLException {
		String sql = "select * from chamado ch "
                + "inner join usuario us on (us.cd_usuario = ch.cd_usuario)"
                + "inner join pessoa pe on (ch.cd_cliente = pe.cd_pessoa)"
                + "inner join pessoa pet on (ch.cd_tecnico = pet.cd_pessoa)"
                + "inner join situacao si on (si.cd_situacao = ch.cd_situacao)"                
                + " where pe.nome like ?";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        stmt.setString(1, chamado.getCliente().getNome());
        List<Chamado> lista = new ArrayList<>();
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
        	chamado = new Chamado();
            chamado.setCodigo(rs.getInt("ch.cd_chamado"));
            chamado.getUsuario().setCodigo(rs.getInt("ch.cd_usuario"));
            chamado.getUsuario().setNome(rs.getString("us.nome"));
            chamado.getUsuario().setLogin(rs.getString("us.login"));
            chamado.getUsuario().setSenha(rs.getString("us.senha"));
            chamado.getTecnico().setCodigo(rs.getInt("ch.cd_tecnico"));
            chamado.getTecnico().setNome(rs.getString("pet.nome"));
            chamado.getCliente().setCodigo(rs.getInt("ch.cd_cliente"));
            chamado.getCliente().setNome(rs.getString("pe.nome"));
            chamado.getSituacao().setCodigo(rs.getInt("ch.cd_situacao"));
            chamado.getSituacao().setDescricao(rs.getString("si.descricao"));
            chamado.setDataAbertura(rs.getDate("ch.dataAbertura"));
            chamado.setDataPrevista(rs.getDate("ch.dataPrevista"));
            chamado.setDataConclusao(rs.getDate("ch.dataConclusao"));
            chamado.setSolicitado(rs.getString("ch.solicitado"));
            chamado.setSolucao(rs.getString("ch.solucao"));
            chamado.setMaterial(rs.getString("ch.material"));
            chamado.setCausa(rs.getString("ch.causa"));
            lista.add(chamado);
        }
        stmt.close();
        rs.close();
        return lista;
	}

	public List<Chamado> listaChamado() throws RemoteException, SQLException {
		Chamado chamado;
		List<Chamado> lista = new ArrayList<>();
        String sql = "select * from chamado ch "
                + "inner join usuario us on (us.cd_usuario = ch.cd_usuario)"
                + "inner join pessoa pe on (ch.cd_cliente = pe.cd_pessoa) "
                + "inner join pessoa pet on (ch.cd_tecnico = pet.cd_pessoa)"
                + "inner join situacao si on (si.cd_situacao = ch.cd_situacao)";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
			chamado = new Chamado();
			chamado.setCodigo(rs.getInt("ch.cd_chamado"));
            chamado.getUsuario().setCodigo(rs.getInt("ch.cd_usuario"));
            chamado.getUsuario().setNome(rs.getString("us.nome"));
            chamado.getUsuario().setLogin(rs.getString("us.login"));
            chamado.getUsuario().setSenha(rs.getString("us.senha"));
            chamado.getTecnico().setCodigo(rs.getInt("ch.cd_tecnico"));
            chamado.getTecnico().setNome(rs.getString("pet.nome"));
            chamado.getCliente().setCodigo(rs.getInt("ch.cd_cliente"));
            chamado.getCliente().setNome(rs.getString("pe.nome"));
            chamado.getSituacao().setCodigo(rs.getInt("ch.cd_situacao"));
            chamado.getSituacao().setDescricao(rs.getString("si.descricao"));
            chamado.setDataAbertura(rs.getDate("ch.dataAbertura"));
            chamado.setDataPrevista(rs.getDate("ch.dataPrevista"));
            chamado.setDataConclusao(rs.getDate("ch.dataConclusao"));
            chamado.setSolicitado(rs.getString("ch.solicitado"));
            chamado.setSolucao(rs.getString("ch.solucao"));
            chamado.setMaterial(rs.getString("ch.material"));
            chamado.setCausa(rs.getString("ch.causa"));
			lista.add(chamado);
        }
        return lista;
	}
	
	//Divisão
    
	public String insereDivisao(Divisao divisao) throws RemoteException, SQLException {
		String sql = "insert into divisao ( descricao ) values(?)";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        //stmt.setInt(1, divisao.getCodigo());
        stmt.setString(1, divisao.getDescricao());
        stmt.execute();
        stmt.close();
        return "Inserido com Sucesso";
	}

	public String alteraDivisao(Divisao divisao) throws RemoteException, SQLException {
		String sql = "update divisao set descricao = ? where cd_divisao = ?";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        stmt.setString(1, divisao.getDescricao());
        stmt.setInt(2, divisao.getCodigo());
        stmt.execute();
        stmt.close();
		return "Alterado com Sucesso";
	}

	public String excluiDivisao(Divisao divisao) throws RemoteException, SQLException {
		String sql = "DELETE from divisao where cd_divisao = ? ";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        stmt.setInt(1, divisao.getCodigo());
        stmt.execute();
        stmt.close();
		return "Excluido com Sucesso";
	}

	public List<Divisao> retornaDivisao(Divisao divisao) throws RemoteException, SQLException {
		String sql = "select * from divisao di where descricao like ?";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        List<Divisao> lista = new ArrayList<>();
        stmt.setString(1, divisao.getDescricao());
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
        	divisao = new Divisao();
            divisao.setCodigo(rs.getInt("di.cd_divisao"));
            divisao.setDescricao(rs.getString("di.descricao"));
            lista.add(divisao);
        }
        stmt.close();
        rs.close();
        return lista;
	}

	public List<Divisao> listaDivisao() throws RemoteException, SQLException {		
		Divisao divisao;
		List<Divisao> lista = new ArrayList<>();
        String sql = "select * from divisao di";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
			divisao = new Divisao();
            divisao.setCodigo(rs.getInt("di.cd_divisao"));
            divisao.setDescricao(rs.getString("di.descricao"));
			lista.add(divisao);
        }
        return lista;
	}
    //Usuario

    public String insereUsuario(Usuario usuario) throws RemoteException, SQLException {
        String sql = "insert into usuario (nome, login, senha, administrador) values (?, ?, ?, ?)";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        stmt.setString(1, usuario.getNome());
        stmt.setString(2, usuario.getLogin());
        stmt.setString(3, usuario.getSenha());
        stmt.setInt(4, usuario.getAdministrador());
        stmt.execute();
        stmt.close();
        return "Inserido com Sucesso";
    }

    public String alteraUsuario(Usuario usuario) throws RemoteException, SQLException {
        String sql = "update usuario set nome = ?, login = ?, senha = ?, administrador = ? where cd_usuario = ?";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        stmt.setString(1, usuario.getNome());
        stmt.setString(2, usuario.getLogin());
        stmt.setString(3, usuario.getSenha());
        stmt.setInt(4, usuario.getAdministrador());
        stmt.setInt(5, usuario.getCodigo());
        stmt.execute();
        stmt.close();
        return "Alterado com Sucesso";
    }

    public String excluiUsuario(Usuario usuario) throws RemoteException, SQLException {
        String sql = "DELETE from usuario where cd_usuario = ? ";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        stmt.setInt(1, usuario.getCodigo());
        stmt.execute();
        stmt.close();
        return null;
    }

    public List<Usuario> retornaUsuario(Usuario usuario) throws RemoteException, SQLException {
    	String sql = "select * from usuario us "
                + " where us.nome like ?";
    	List<Usuario> lista2 = new ArrayList<>();
    	PreparedStatement stmt = conexao.prepareStatement(sql);
        stmt.setString(1, usuario.getNome());
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
        	usuario = new Usuario();
            usuario.setCodigo(rs.getInt("us.cd_usuario"));
            usuario.setNome(rs.getString("us.nome"));
            usuario.setLogin(rs.getString("us.login"));
            usuario.setSenha(rs.getString("us.senha"));
            usuario.setAdministrador(rs.getInt("us.administrador"));
            lista2.add(usuario);
        }
        stmt.close();
        rs.close();
        return lista2;
    }

    public List<Usuario> listaUsuario() throws RemoteException, SQLException {
        Usuario usuario;
        List<Usuario> lista = new ArrayList<>();
        String sql = "select * from usuario us ";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
            usuario = new Usuario();
            usuario.setCodigo(rs.getInt("us.cd_usuario"));
            usuario.setNome(rs.getString("us.nome"));
            usuario.setLogin(rs.getString("us.login"));
            usuario.setSenha(rs.getString("us.senha"));
            usuario.setAdministrador(rs.getInt("us.administrador"));
            lista.add(usuario);
        }
        return lista;
    }
    
    public Usuario validaUsuario(Usuario usuario) throws SQLException, RemoteException{
    	String sql ="select * from usuario us where us.login = ? and us.senha = ?";
    	PreparedStatement stmt = conexao.prepareStatement(sql);
        stmt.setString(1, usuario.getLogin());
        stmt.setString(2, usuario.getSenha());
    	ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
            usuario = new Usuario();
            usuario.setCodigo(rs.getInt("us.cd_usuario"));
            usuario.setNome(rs.getString("us.nome"));
            usuario.setLogin(rs.getString("us.login"));
            usuario.setSenha(rs.getString("us.senha"));
            usuario.setAdministrador(rs.getInt("us.administrador"));
            return usuario;
        }
    	return null;
    	
    }
    //Pessoa
	
	public String inserePessoa(Pessoa pessoa) throws RemoteException, SQLException {
		String sql = "insert into pessoa (cnpjcpf, inscrg, cd_divisao, nome, rua, numero, complemento, bairro, cidade, estado, dataNasc, juridicaFisica ) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        //stmt.setInt(1, pessoa.getCodigo());
        stmt.setString(1, pessoa.getCnpjcpf());
        stmt.setString(2, pessoa.getInscrg());
        stmt.setInt(3, pessoa.getDivisao().getCodigo());
        stmt.setString(4, pessoa.getNome());
        stmt.setString(5, pessoa.getEndereco().getRua());
        stmt.setString(6, pessoa.getEndereco().getNumero());
        stmt.setString(7, pessoa.getEndereco().getComplemento());
        stmt.setString(8, pessoa.getEndereco().getBairro());
        stmt.setString(9, pessoa.getEndereco().getCidade());
        stmt.setString(10, pessoa.getEndereco().getEstado());
        stmt.setDate(11, new Date(pessoa.getDataNasc().getTime()));
        stmt.setString(12, String.valueOf(pessoa.getJuridicaFisica()));
        stmt.execute();
        stmt.close();
        return "Inserido com Sucesso";
	}

	public String alteraPessoa(Pessoa pessoa) throws RemoteException, SQLException {
		String sql = "update pessoa set cnpjcpf = ?, inscrg = ?, cd_divisao = ?, nome = ?, rua = ?, numero = ?, complemento = ?, bairro = ?, cidade = ?, estado = ?, dataNasc = ?, juridicaFisica = ? where cd_pessoa = ?";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        stmt.setString(1, pessoa.getCnpjcpf());
        stmt.setString(2, pessoa.getInscrg());
        stmt.setInt(3, pessoa.getDivisao().getCodigo());
        stmt.setString(4, pessoa.getNome());
        stmt.setString(5, pessoa.getEndereco().getRua());
        stmt.setString(6, pessoa.getEndereco().getNumero());
        stmt.setString(7, pessoa.getEndereco().getComplemento());
        stmt.setString(8, pessoa.getEndereco().getBairro());
        stmt.setString(9, pessoa.getEndereco().getCidade());
        stmt.setString(10, pessoa.getEndereco().getEstado());
        stmt.setDate(11, new Date(pessoa.getDataNasc().getTime()));
        stmt.setString(12, String.valueOf(pessoa.getJuridicaFisica()));
        stmt.setInt(13, pessoa.getCodigo());
        stmt.execute();
        stmt.close();
		return "Alterado com Sucesso";
	}

	public String excluiPessoa(Pessoa pessoa) throws RemoteException, SQLException {
		String sql = "DELETE from pessoa where cd_pessoa = ? ";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        stmt.setInt(1, pessoa.getCodigo());
        stmt.execute();
        stmt.close();
		return null;
	}


	public List<Pessoa> retornaPessoa(Pessoa pessoa) throws RemoteException, SQLException {
		String sql = "select * from pessoa pe "
                + "inner join divisao di on (pe.cd_divisao = di.cd_divisao)"
                + " where pe.nome like ?";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        List<Pessoa> lista = new ArrayList<>();
        stmt.setString(1, pessoa.getNome());
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
        	pessoa = new Pessoa();
            pessoa.setCodigo(rs.getInt("pe.cd_pessoa"));
            pessoa.setCnpjcpf(rs.getString("pe.cnpjcpf"));
            pessoa.setInscrg(rs.getString("pe.inscrg"));
            pessoa.getDivisao().setCodigo(rs.getInt("di.cd_divisao"));
            pessoa.getDivisao().setDescricao(rs.getString("di.descricao"));
            pessoa.setNome(rs.getString("pe.nome"));
            pessoa.getEndereco().setRua(rs.getString("pe.rua"));
            pessoa.getEndereco().setNumero(rs.getString("pe.numero"));
            pessoa.getEndereco().setComplemento(rs.getString("pe.complemento"));
            pessoa.getEndereco().setBairro(rs.getString("pe.bairro"));
            pessoa.getEndereco().setCidade(rs.getString("pe.cidade"));
            pessoa.getEndereco().setEstado(rs.getString("pe.estado"));
            pessoa.setDataNasc(rs.getDate("pe.dataNasc"));
            pessoa.setJuridicaFisica(rs.getInt("pe.juridicaFisica"));
            lista.add(pessoa);
        }
        stmt.close();
        rs.close();
        return lista;
	}

	public List<Pessoa> listaPessoa() throws RemoteException, SQLException {
		Pessoa pessoa;
		List<Pessoa> lista = new ArrayList<>();
        String sql = "select * from pessoa pe "
                + "inner join divisao di on (pe.cd_divisao = di.cd_divisao)";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
			pessoa = new Pessoa();
            pessoa.setCodigo(rs.getInt("pe.cd_pessoa"));
            pessoa.setCnpjcpf(rs.getString("pe.cnpjcpf"));
            pessoa.setInscrg(rs.getString("pe.inscrg"));
            pessoa.getDivisao().setCodigo(rs.getInt("di.cd_divisao"));
            pessoa.getDivisao().setDescricao(rs.getString("di.descricao"));
            pessoa.setNome(rs.getString("pe.nome"));
            pessoa.getEndereco().setRua(rs.getString("pe.rua"));
            pessoa.getEndereco().setNumero(rs.getString("pe.numero"));
            pessoa.getEndereco().setComplemento(rs.getString("pe.complemento"));
            pessoa.getEndereco().setBairro(rs.getString("pe.bairro"));
            pessoa.getEndereco().setCidade(rs.getString("pe.cidade"));
            pessoa.getEndereco().setEstado(rs.getString("pe.estado"));
            pessoa.setDataNasc(rs.getDate("pe.dataNasc"));
            pessoa.setJuridicaFisica(rs.getInt("pe.juridicaFisica"));
			lista.add(pessoa);
        }
        return lista;
	}
	
	public List<Pessoa> listaCliente() throws RemoteException, SQLException {
		Pessoa pessoa;
		List<Pessoa> lista = new ArrayList<>();
        String sql = "select * from pessoa pe "
                + "inner join divisao di on (pe.cd_divisao = di.cd_divisao)"
                + " where pe.cd_divisao = 1";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
			pessoa = new Pessoa();
            pessoa.setCodigo(rs.getInt("pe.cd_pessoa"));
            pessoa.setCnpjcpf(rs.getString("pe.cnpjcpf"));
            pessoa.setInscrg(rs.getString("pe.inscrg"));
            pessoa.getDivisao().setCodigo(rs.getInt("di.cd_divisao"));
            pessoa.getDivisao().setDescricao(rs.getString("di.descricao"));
            pessoa.setNome(rs.getString("pe.nome"));
            pessoa.getEndereco().setRua(rs.getString("pe.rua"));
            pessoa.getEndereco().setNumero(rs.getString("pe.numero"));
            pessoa.getEndereco().setComplemento(rs.getString("pe.complemento"));
            pessoa.getEndereco().setBairro(rs.getString("pe.bairro"));
            pessoa.getEndereco().setCidade(rs.getString("pe.cidade"));
            pessoa.getEndereco().setEstado(rs.getString("pe.estado"));
            pessoa.setDataNasc(rs.getDate("pe.dataNasc"));
            pessoa.setJuridicaFisica(rs.getInt("pe.juridicaFisica"));
			lista.add(pessoa);
        }
        return lista;
	}
	
	public List<Pessoa> listaTecnico() throws RemoteException, SQLException {
		Pessoa pessoa;
		List<Pessoa> lista = new ArrayList<>();
        String sql = "select * from pessoa pe "
                + "inner join divisao di on (pe.cd_divisao = di.cd_divisao)"
                + " where pe.cd_divisao = 2";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
			pessoa = new Pessoa();
            pessoa.setCodigo(rs.getInt("pe.cd_pessoa"));
            pessoa.setCnpjcpf(rs.getString("pe.cnpjcpf"));
            pessoa.setInscrg(rs.getString("pe.inscrg"));
            pessoa.getDivisao().setCodigo(rs.getInt("di.cd_divisao"));
            pessoa.getDivisao().setDescricao(rs.getString("di.descricao"));
            pessoa.setNome(rs.getString("pe.nome"));
            pessoa.getEndereco().setRua(rs.getString("pe.rua"));
            pessoa.getEndereco().setNumero(rs.getString("pe.numero"));
            pessoa.getEndereco().setComplemento(rs.getString("pe.complemento"));
            pessoa.getEndereco().setBairro(rs.getString("pe.bairro"));
            pessoa.getEndereco().setCidade(rs.getString("pe.cidade"));
            pessoa.getEndereco().setEstado(rs.getString("pe.estado"));
            pessoa.setDataNasc(rs.getDate("pe.dataNasc"));
            pessoa.setJuridicaFisica(rs.getInt("pe.juridicaFisica"));
			lista.add(pessoa);
        }
        return lista;
	}
	
	//Situação
	
	public String insereSituacao(Situacao situacao) throws RemoteException, SQLException {
		String sql = "insert into situacao (descricao) values(?)";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        //stmt.setInt(1, situacao.getCodigo());
        stmt.setString(1, situacao.getDescricao());
        stmt.execute();
        stmt.close();
		return "Inserido com Sucesso";
	}

	public String alteraSituacao(Situacao situacao) throws RemoteException, SQLException {
		String sql = "update situacao set descricao = ? where cd_situacao = ?";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        stmt.setString(1, situacao.getDescricao());
        stmt.setInt(2, situacao.getCodigo());
        stmt.execute();
        stmt.close();
		return "Aterado com Sucesso";
	}

	public String excluiSituacao(Situacao situacao) throws RemoteException, SQLException {
		String sql = "DELETE from situacao where cd_situacao = ? ";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        stmt.setInt(1, situacao.getCodigo());
        stmt.execute();
        stmt.close();
		return "Excluido com Sucesso";
	}

	public Situacao retornaSituacao(Situacao situacao) throws RemoteException, SQLException {
		String sql = "select * from situacao si"
				+ " inner join pessoa pe on (pe.cd_situacao = si.cd_situacao)";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        stmt.setInt(1, situacao.getCodigo());
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
            situacao.setCodigo(rs.getInt("si.cd_situacao"));
            situacao.setDescricao(rs.getString("si.descricao"));
        }
        stmt.close();
        rs.close();
        return situacao;
	}

	public List<Situacao> listaSituacao() throws RemoteException, SQLException {
		Situacao situacao;
		List<Situacao> lista = new ArrayList<>();
        String sql = "select * from situacao si";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
			situacao = new Situacao();
            situacao.setCodigo(rs.getInt("si.cd_situacao"));
            situacao.setDescricao(rs.getString("si.descricao"));
			lista.add(situacao);
        }
        return lista;
	}
        
}
